Panasonic Switch-M16eG PN28160K
OpenWrtの対応状況
ストックファームウェアでの共通の操作
作業用マシンのIPアドレスを192.168.1.111に設定して、LANケーブルで本機と1:1で接続しておく
シリアルコンソール
初期ユーザ名: manager
初期パスワード: manager
Cを押してCLIを開く
enableコマンドで特権モードに移行する
code:txt
M16eG> enable
M16eG#
IPアドレスを設定する
code:txt
configure
ip address 192.168.1.1 255.255.255.0
exit
ブートコードのアップデート
code:txt
update boot 192.168.1.111 pn28160k_b10022.rom
OpenWrtのインストール
こちらの手順をもとにやっていく
TFTPサーバの用意
こんな感じのシェルスクリプトを用意しておいた
code:tftpd.sh
docker run --rm -p 69:69/udp \
-v "$(pwd)"/pn28160k_b10022.rom:/tftpboot/pn28160k_b10022.rom:ro \
-v "$(pwd)"/pn28160k_v30006.rom:/tftpboot/pn28160k_v30006.rom:ro \
-v "$(pwd)"/openwrt-23.05.5-realtek-rtl838x-panasonic_m16eg-pn28160k-initramfs-kernel.bin:/tftpboot/init.img:ro \
jumanjiman/tftp-hpa
initramfsのロードと実行
大破さんが書いた手順にはFTFTサーバのIPアドレスは 192.168.1.111 を使用せよと書いてあるけど、デフォルトが10.90.90.1になっていた
このアドレスブロックは別のところで使っていて面倒なので、IPアドレスを振り直した
code:txt
RTL838x# # setenv ipaddr 192.168.1.1
RTL838x# # setenv serverip 192.168.1.16
RTL838x# # setenv netmask 255.255.255.0
RTL838x# # rtk network on
Enable network
Force port28 link up 1G
Please wait for PHY init-time ...
RTL838x# # ping 192.168.1.16
Using rtl8380#0 device
host 192.168.1.16 is alive
大破さんが書いた手順には、ファイル名は0101A8C0.imgにせよと書いてある
しかし、実際には025A5A0A.imgをロードしようとしてる
ファイル名を025A5A0A.imgにしても、File Not found といわれてうまくいかない
code:txt
RTL838x# # tftpboot 0x81000000
*** Warning: no boot file name; using '025A5A0A.img'
Using rtl8380#0 device
TFTP from server 10.90.90.1; our IP address is 10.90.90.2
Filename '025A5A0A.img'.
Load address: 0x81000000
Loading: *
TFTP error: 'File not found' (1)
Not retrying...
デフォルトのファイル名を使うのをやめて、以下のようにファイル名を指定したらTFTPからロード成功した
code:u-boot
tftpboot 0x81000000 init.img
tftpサーバの問題なのか、U-Boot側の問題なのかはよくわからない
initramfsが起動できたら、ストックファームウェアをバックアップ
こんな感じのシェルスクリプトを用意しておいた
code:backup_mtd.sh
set -e
ssh openwrt 'dd if=/dev/mtd0' | dd of=./mtd/mtd0
ssh openwrt 'dd if=/dev/mtd1' | dd of=./mtd/mtd1
ssh openwrt 'dd if=/dev/mtd2' | dd of=./mtd/mtd2
ssh openwrt 'dd if=/dev/mtd3' | dd of=./mtd/mtd3
ssh openwrt 'dd if=/dev/mtd4' | dd of=./mtd/mtd4
ssh openwrt 'dd if=/dev/mtd5' | dd of=./mtd/mtd5
ssh openwrt 'dd if=/dev/mtd6' | dd of=./mtd/mtd6
ssh openwrt 'dd if=/dev/mtd7' | dd of=./mtd/mtd7
バックアップが完了したら再起動
code:sh
reboot
rebootを実行したら、U-Bootの起動にそなえてシリアルコンソールでCtrl-Cを連打する
U-Bootのコンソールにはいれたら、フラッシュの初期化
code:txt
RTL838x# # ffsmount c:/
File system initialization done
RTL838x# # ffsfmt c:/
FFS Format success
Official Image を書き込む
code:u-boot
updatert pn28160k_v30006.rom
なんでこの手順が必要なのかよくわかってない…
U-Bootの環境変数を設定する
code:u-boot
setenv loadaddr 0xb4e00000
setenv bootcmd bootm
saveenv
initramfsイメージをTFTPからロードして起動する
code:u-boot
tftpboot 0x81000000 init.img
bootm
initramfsイメージが起動したら、sysupgradeイメージを書き込む
ホスト側
code:sh
ssh openwrt 'cat > /tmp/sysupgrade.img' < openwrt-23.05.5-realtek-rtl838x-panasonic_m16eg-pn28160k-squashfs-sysupgrade.bin
OpenWrt側
code:sh
sysupgrade -v -n /tmp/sysupgrade.img
起動完了
code:txt
Warning: Permanently added '192.168.1.1' (ED25519) to the list of known hosts.
BusyBox v1.36.1 (2024-09-23 12:34:46 UTC) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt 23.05.5, r24106-10cc5fcd00
-----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~# uname -a
Linux OpenWrt 5.15.167 #0 Mon Sep 23 12:34:46 2024 mips GNU/Linux root@OpenWrt:~# cat /proc/cpuinfo
system type : RTL8382
machine : Panasonic Switch-M16eG PN28160K
processor : 0
cpu model : MIPS 4KEc V7.0
BogoMIPS : 498.89
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
Options implemented : tlb 4kex 4k_cache 32fpr prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit mm_full
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
全てのスイッチポートにひとつずつMACアドレスが振られていて豪華
code:txt
root@OpenWrt:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:40:3b:a7:5a brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
inet6 fe80::250:40ff:fe3b:a75a/64 scope link
valid_lft forever preferred_lft forever
3: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 00:50:40:3b:a7:5a brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
4: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:5b brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
5: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:5c brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
6: lan4@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:5d brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
7: lan5@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:5e brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
8: lan6@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:5f brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
9: lan7@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:60 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
10: lan8@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:61 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
11: lan9@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:62 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
12: lan10@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:63 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
13: lan11@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:64 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
14: lan12@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:65 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
15: lan13@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:66 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
16: lan14@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:67 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
17: lan15@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master switch state LOWERLAYERDOWN group default qlen 1000
link/ether 02:50:40:3b:a7:68 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
18: lan16@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master switch state UP group default qlen 1000
link/ether 02:50:40:3b:a7:69 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:01:00:00
19: switch: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:40:3b:a7:5a brd ff:ff:ff:ff:ff:ff
inet6 fe80::250:40ff:fe3b:a75a/64 scope link
valid_lft forever preferred_lft forever
20: switch.1@switch: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:50:40:3b:a7:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global switch.1
valid_lft forever preferred_lft forever
inet6 fd4d:c5e2:c457::1/60 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::250:40ff:fe3b:a75a/64 scope link
valid_lft forever preferred_lft forever
LuCIから見ても壮観
https://scrapbox.io/files/66fe1d09bc8ea1001e6811e2.png